46 research outputs found
On the mathematical synthesis of equational logics
We provide a mathematical theory and methodology for synthesising equational
logics from algebraic metatheories. We illustrate our methodology by means of
two applications: a rational reconstruction of Birkhoff's Equational Logic and
a new equational logic for reasoning about algebraic structure with
name-binding operators.Comment: Final version for publication in Logical Methods in Computer Scienc
Step-Indexing: The Good, the Bad and the Ugly
Over the last decade, step-indices have been widely used for the
construction of operationally-based logical relations in the presence
of various kinds of recursion. We first give an argument that
step-indices, or something like them, seem to be required for defining
realizability relations between high-level source languages and
low-level targets, in the case that the low-level allows egregiously
intensional operations such as reflection or comparison of code
pointers. We then show how, much to our annoyance, step-indices also
seem to prevent us from exploiting such operations as aggressively as
we would like in proving program transformations
An Equational Theory for Weak Bisimulation via Generalized Parameterized Coinduction
Coinductive reasoning about infinitary structures such as streams is widely
applicable. However, practical frameworks for developing coinductive proofs and
finding reasoning principles that help structure such proofs remain a
challenge, especially in the context of machine-checked formalization.
This paper gives a novel presentation of an equational theory for reasoning
about structures up to weak bisimulation. The theory is both compositional,
making it suitable for defining general-purpose lemmas, and also incremental,
meaning that the bisimulation can be created interactively. To prove the
theory's soundness, this paper also introduces generalized parameterized
coinduction, which addresses expressivity problems of earlier works and
provides a practical framework for coinductive reasoning. The paper presents
the resulting equational theory for streams, but the technique applies to other
structures too.
All of the results in this paper have been proved in Coq, and the generalized
parameterized coinduction framework is available as a Coq library.Comment: To be published in CPP 202
Formally Verified Simulations of State-Rich Processes using Interaction Trees in Isabelle/HOL
Simulation and formal verification are important complementary techniques necessary in high assurance model-based systems development. In order to support coherent results, it is necessary to provide unifying semantics and automation for both activities. In this paper we apply Interaction Trees in Isabelle/HOL to produce a verification and simulation framework for state-rich process languages. We develop the core theory and verification techniques for Interaction Trees, use them to give a semantics to the CSP and Circus languages, and formally link our new semantics with the failures-divergences semantic model. We also show how the Isabelle code generator can be used to generate verified executable simulations for reactive and concurrent programs
Interaction Trees: Representing Recursive and Impure Programs in Coq
"Interaction trees" (ITrees) are a general-purpose data structure for
representing the behaviors of recursive programs that interact with their
environments. A coinductive variant of "free monads," ITrees are built out of
uninterpreted events and their continuations. They support compositional
construction of interpreters from "event handlers", which give meaning to
events by defining their semantics as monadic actions. ITrees are expressive
enough to represent impure and potentially nonterminating, mutually recursive
computations, while admitting a rich equational theory of equivalence up to
weak bisimulation. In contrast to other approaches such as relationally
specified operational semantics, ITrees are executable via code extraction,
making them suitable for debugging, testing, and implementing software
artifacts that are amenable to formal verification.
We have implemented ITrees and their associated theory as a Coq library,
mechanizing classic domain- and category-theoretic results about program
semantics, iteration, monadic structures, and equational reasoning. Although
the internals of the library rely heavily on coinductive proofs, the interface
hides these details so that clients can use and reason about ITrees without
explicit use of Coq's coinduction tactics.
To showcase the utility of our theory, we prove the termination-sensitive
correctness of a compiler from a simple imperative source language to an
assembly-like target whose meanings are given in an ITree-based denotational
semantics. Unlike previous results using operational techniques, our
bisimulation proof follows straightforwardly by structural induction and
elementary rewriting via an equational theory of combinators for control-flow
graphs.Comment: 28 pages, 4 pages references, published at POPL 202
Probabilistic Programming with Densities in SlicStan: Efficient, Flexible, and Deterministic
Stan is a probabilistic programming language that has been increasingly used
for real-world scalable projects. However, to make practical inference
possible, the language sacrifices some of its usability by adopting a block
syntax, which lacks compositionality and flexible user-defined functions.
Moreover, the semantics of the language has been mainly given in terms of
intuition about implementation, and has not been formalised.
This paper provides a formal treatment of the Stan language, and introduces
the probabilistic programming language SlicStan --- a compositional,
self-optimising version of Stan. Our main contributions are: (1) the
formalisation of a core subset of Stan through an operational density-based
semantics; (2) the design and semantics of the Stan-like language SlicStan,
which facilities better code reuse and abstraction through its compositional
syntax, more flexible functions, and information-flow type system; and (3) a
formal, semantic-preserving procedure for translating SlicStan to Stan